package br.com.edoc.aop;

import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
import br.com.edoc.anotation.SaveOrUpdate;
import br.com.edoc.gerentes.GerentePadraoImpl;
import br.com.edoc.reflexao.ValidadorObjeto;
import br.com.edoc.validador.ValidadorDefault;
import br.com.edoc.validation.ProcessValidation;

public class AdivisorSaveOrUpdateBefore implements MethodBeforeAdvice  {
	public void before(Method metodoa, Object[] arqumentos, Object object)		throws Throwable {
		SaveOrUpdate sa = metodoa.getAnnotation(SaveOrUpdate.class);
		if(sa.valida()){
			if(((GerentePadraoImpl) object).getValidador()!=null){
				((GerentePadraoImpl) object).getValidador().valida(arqumentos[0]);
			}else  
			if(!ProcessValidation.isDefaultValidation(arqumentos[0]) || !ProcessValidation.defaultValidationAbilitede(arqumentos[0])){
				ValidadorObjeto validador = new ValidadorObjeto();
				validador.valida(arqumentos[0]);
			}
			else{
				ValidadorDefault validador = new ValidadorDefault();
				validador.valida(arqumentos[0]);
				
			}
		}
		if(((GerentePadraoImpl) object).getSession().isOpen()){
			System.out.println("Aberta a conexão");
		}
		((GerentePadraoImpl) object).getTransacao();
		
	}
}
